package 哈希表;

import java.util.HashMap;

public class 两数之和 {
    public int[] twosum(int[] nums,int target){
        int[] array = new int[2];
        if (nums == null&&nums.length==0) return array;
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            //这里用减法找到适合nums[i]的那个
            int temp = target - nums[i];
            //这里是把temp的值作为key 下标作value 毕竟我们最后想得到的是下标的数组
            if (map.containsKey(temp)){
                array[0] = i;
                array[1] = map.get(temp);
            }
            //put(key,value) 这里的想法是把下标位序当作值
            //这里一定要把nums[i]里面的值添加到集合上 因为当找不到合适的temp他会把当前的nums加到map上 让他下次的for在map里面找
            map.put(nums[i],i);
        }
        return array;
    }
}
